import axios from 'axios'     //引入
import qs from 'qs'     //引入
import { Notification, Loading, Message } from 'element-ui';

let flag = true; // 是否正式环境
let loadingInstance = "";
let baseURL = flag ? 'http://localhost:8008' : ""

let config = {
    // baseURL: baseURL,
    baseURL: '/adm', //不需要在api.js文件加adm的置换前缀了
    withCredentials: true,
    timeout: 30000,   //设置最大请求时间
    headers: {
        'os': 'h5',
    },
}
const _axios = axios.create(config)

let errorCode = {
    500: "服务器意外错误",
    400: "参数校验失败",
    404: "方法不存在",
    406: "请求方法不允许",
    401: "请重新登录",
    425: "当前网络拥堵",
    1000: "校验码不正确",
    1001: "未实名",
    1002: "房间密码错误",
    1003: "账户金币不足",
}

/* 请求拦截器（请求之前的操作） */
_axios.interceptors.request.use(
    config => {
        //   //如果有需要在这里开启请求时的loading动画效果
        loadingInstance = Loading.service()

        //添加token,需要结合自己的实际情况添加
        // 跳过登录token
        // if (config.url.indexOf("/api/auth/guild_login") == -1) {
        //     return config;
        // }
        if (sessionStorage.getItem("user") && sessionStorage.getItem("user") !== undefined) {
            let token = JSON.parse(sessionStorage.getItem("user")).token;
            console.log(config.url, "====请求路径");
            config.headers.Authorization = token;

        } else {
            Message.error('请重新登录')
            return false
        }
        // }
        return config;
    },
    err => Promise.reject(err)
);

/* 响应拦截器 (请求之后的操作) */
_axios.interceptors.response.use(
    res => {
        //在这里关闭请求时的loading动画效果   
        loadingInstance.close();

        console.log(res, "===============httpindex", res.data.code);
        if (res.data.code !== 200) {
            if (errorCode[res.data.code]) {
                Notification({
                    title: '请求失败',
                    message: errorCode[res.data.code],
                    type: 'error'
                })
            } else {
                Notification({
                    title: '请求失败',
                    message: res.data.msg,
                    type: 'error'
                })
            }
        }

        let httpData = res.data;
        if (typeof (httpData) == "string") {
            httpData = JSON.parse(httpData);
        }
        console.log(httpData, "---正确返回")
        if (httpData.code == 200) {
            // 返回正确的结果(then接受数据)
            return Promise.resolve(httpData);
        }
    },
    err => {
        loadingInstance.close();
        if (err) {
            //在这里关闭请求时的loading动画效果
            console.log(err, "==========网络异常信息");
            Notification({
                title: '网络异常',
                message: err,
                type: 'error'
            })
        }
        return Promise.reject(err);
    }
);

//封装post,get方法
const http = {
    get(url = '', params = {}) {
        return new Promise((resolve, reject) => {
            _axios({
                url,
                params,
                method: 'GET'
            }).then(res => {
                resolve(res)
                return res
            }).catch(error => {
                reject(error)
            })
        })
    },
    post(url = '', params = {}) {
        return new Promise((resolve, reject) => {
            _axios({
                url,
                data: params,
                method: 'POST'
            }).then(res => {
                resolve(res)
                return res
            }).catch(error => {
                reject(error)
            })
        })
    }
}


export default http
